home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 19 / CD_ASCQ_19_010295.iso / dos / prg / pas / swag / hardware.swg / 0024_Port Addresses.pas < prev    next >
Pascal/Delphi Source File  |  1994-01-27  |  2KB  |  65 lines

  1. {
  2. > does anybody knows the address for serial/parallel ports?
  3.  
  4. you can find them by reading the 7 (seven) WORDs starting at address 0040:0000
  5. <smile>...
  6. }
  7.  
  8. CONST
  9.   BIOSBASE : word = $0040;
  10.   PORTADDR : word = $0000;
  11.  
  12. VAR
  13.   COM1, COM2,
  14.   COM3, COM4,
  15.   LPT1, LPT2, LPT3 : word;
  16.  
  17. BEGIN
  18.   COM1 := memw[BIOSBASE:PORTADDR+0];
  19.   COM2 := memw[BIOSBASE:PORTADDR+2];
  20.   COM3 := memw[BIOSBASE:PORTADDR+4];
  21.   COM4 := memw[BIOSBASE:PORTADDR+6];
  22.   LPT1 := memw[BIOSBASE:PORTADDR+8];
  23.   LPT2 := memw[BIOSBASE:PORTADDR+10];
  24.   LPT3 := memw[BIOSBASE:PORTADDR+12];
  25. END.
  26.  
  27. {
  28. RICHARD BROWNE
  29.  
  30. >I guess I can declare an absolute variable at $40:$0000 and use offset to fi
  31. >the addresses.  Just a guess - haven't tried it yet. Thanks for your help.
  32.  
  33. Do this, it works.  When you WRITELN the variables to the
  34. screen, they will be in decimal.  If you convert them to hex,
  35. you'll see that they are the old, familiar addresses.  If any
  36. variable is zero, there is no port present in your computer.
  37.  
  38. Another thing you'll notice, if you have com4, for instance, but
  39. no com3.  The normal com4 address will show up in the com3
  40. memory location, and the com4 adderess will be 0.  Which
  41. explains why funny things happen when you are using ports 1, 2
  42. and 4 with no 3, or 1 and 3 with no 2, etc., and why we are told
  43. to always have consecutive com ports, with no "missing" numbers.
  44. }
  45. program testadr;
  46. var
  47.    com1adr : Word Absolute $0040:$0000; { Get COM1 Port address }
  48.    com2adr : Word Absolute $0040:$0002; { Get COM2 Port address }
  49.    com3adr : Word Absolute $0040:$0004; { Get COM3 Port address }
  50.    com4adr : Word Absolute $0040:$0006; { Get COM4 Port address }
  51.    lpt1adr : Word Absolute $0040:$0008; { Get LPT1 Port address }
  52.    lpt2adr : Word Absolute $0040:$000A; { Get LPT2 Port address }
  53.    lpt3adr : Word Absolute $0040:$000C; { Get LPT3 Port address }
  54.  
  55. begin
  56.    writeln('com1 address: ',com1adr);
  57.    writeln('com2 address: ',com2adr);
  58.    writeln('com3 address: ',com3adr);
  59.    writeln('com4 address: ',com4adr);
  60.    writeln('lpt1 address: ',lpt1adr);
  61.    writeln('lpt2 address: ',lpt2adr);
  62.    writeln('lpt3 address: ',lpt3adr);
  63.    readln;
  64. end.
  65.